package com.itheima.youdianda.service.impl;

import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.itheima.youdianda.common.R;
import com.itheima.youdianda.dto.YddCateDto;
import com.itheima.youdianda.mapper.YddCateMapper;
import com.itheima.youdianda.pojo.YddCate;
import com.itheima.youdianda.service.YddCateService;
import org.springframework.stereotype.Service;

import java.util.stream.Collectors;

@Service
public class YddCateServiceImpl extends ServiceImpl<YddCateMapper, YddCate> implements YddCateService {
    /**
     * 数据详情(回显)
     *
     * @param id
     * @param id
     * @return
     */
    @Override
    public R getYddcateById(String id) {
        if (StrUtil.isNotEmpty(id)){
            return R.success(getById(Convert.toLong(id)));
        }
        return R.error("");
    }

    /**
     * 分页条件查询
     *
     * @param catename
     * @param page
     * @param limit
     * @return
     */
    @Override
    public R getYddcatePage(String catename, String page, String limit) {
        //将分页两个参数转化
        Long page1 = Convert.toLong(page);
        Long pageSize = Convert.toLong(limit);
        Page<YddCate> ipage = new Page<>(page1, pageSize);
        //条件查询
        LambdaQueryWrapper<YddCate> wrapper = new LambdaQueryWrapper<>();
        wrapper.like(YddCate::getCatename, catename);
        ipage = page(ipage, wrapper);
        //包装返回值
        ipage.getRecords().stream().map(item->{
            item.setSort_num(item.getSortNum().toString());
            return item;
        }).collect(Collectors.toList());
        YddCateDto yddTagDto = new YddCateDto();
        yddTagDto.setData(ipage.getRecords());
        yddTagDto.setTotalPages((int) ipage.getTotal());
        yddTagDto.setCount((int) ipage.getTotal());
        yddTagDto.setPageSize((int) ipage.getSize());
        yddTagDto.setCurrentPage((int) ipage.getCurrent());
        return R.success(yddTagDto);
    }

    /**
     * 删除分类
     *
     * @param id
     * @return
     */
    @Override
    public R deleteYddcate(Integer id) {
        removeById(id);
        return R.success("删除成功");
    }

    /**
     * 修改分类
     *
     * @param yddCate
     * @return
     */
    @Override
    public R updateYddcate(YddCate yddCate) {
        updateById(yddCate);
        return R.success("修改成功");
    }

    /**
     * 添加分类
     *
     * @param yddCate
     * @return
     */
    @Override
    public R addYddcate(YddCate yddCate) {
        if (StrUtil.isNotEmpty(yddCate.getCatename()) && StrUtil.isNotEmpty(yddCate.getIcon()))
            save(yddCate);
        return R.success("添加成功");
    }

    /**
     * 获取所有分类
     *
     * @return
     */
    @Override
    public R getAllYddcate() {
        return R.success(list());
    }
}
